﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Workflow.Common.Dao;
using Workflow.Dto;
using Workflow.Model;

namespace Workflow.IDAO
{
	public interface ICaseEEMDao : IRepositoryBase<CaseEEM>
	{
		/// <summary>
		/// 根据条件查询CaseEEM
		/// </summary>
		/// <param name="count"></param>
		/// <param name="pageIndex"></param>
		/// <param name="pageSize"></param>
		/// <param name="caseQueryDto"></param>
		/// <param name="orderBy">排序方式</param>
		/// <param name="sort">排序字段</param>
		/// <returns></returns>
		IList<CaseEEM> GetAllCaseByPage(out long count, int pageIndex, int pageSize, CaseQueryDto caseQueryDto, string orderBy, string sort);

        IList<CaseEEM> GetCaseByUser(out long count, int pageIndex, int pageSize, CaseQueryDto caseQueryDto, string orderBy, string sort);
		/// <summary>
		/// FolderClass根据父亲节点查询子节点
		/// </summary>
		/// <param name="parentCode"></param>
		/// <returns></returns>
		IList<FolerClass> GetFolderClass(string parentCode);

		IList<CaseEEM> GetAllCase(CaseQueryDto caseQueryDto);

		/// <summary>
		/// 操作的下一个CaseEEM
		/// </summary>
		/// <param name="caseNo"></param>
		/// <param name="userid"></param>
		/// <returns></returns>
		CaseEEM GetNextGase(long caseNo, long userid, string workStatus);

		/// <summary>
		/// 通过文件名去case
		/// </summary>
		/// <param name="fileName"></param>
		/// <returns></returns>
		CaseEEM GetGaseByFileName(string fileName);

		IList<EEMCaseMonitorDto> GetCaseMonitor(CaseMonitorQueryDto caseMonitorQueryDto);
		IList<EEMPAMonitorDto> GetPAMonitor(PAMonitorQueryDto paMonitorQueryDto);
		IList<CycleTimeReportDto> GetCycleTimeReport(ReceivedCaseDayReportQueryDto ReceivedCaseDayReportQueryDto);
		IList<ReceivedCaseDayReportEEMDto> ReceivedCaseDayReportEEM(ReceivedCaseDayReportQueryDto ReceivedCaseDayReportQueryDto);
		IList<ReceivedCaseDayReportEEMDto> ReceivedCaseMonthReportEEM(ReceivedCaseDayReportQueryDto ReceivedCaseDayReportQueryDto);
		IList<UserWorkloadReportEEMDto> GetUserWorkloadReportEEM(ReceivedCaseDayReportQueryDto ReceivedCaseDayReportQueryDto);
		IList<FirstPassYeildReportEEMDto> GetFirstPassYeildReportEEM(ReceivedCaseDayReportQueryDto ReceivedCaseDayReportQueryDto);
		IList<ReasonReportEEMDto> GetReasonReportEEM(ReceivedCaseDayReportQueryDto ReceivedCaseDayReportQueryDto);
		IList<BaseDataReportEEMDto> GetBaseDataReportEEM(CaseQueryDto caseQueryDto);
		IList<CycleTimeNewReportDto> GetCycleTimeNewReport(ReceivedCaseDayReportQueryDto ReceivedCaseDayReportQueryDto);
	}
}
